home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 014a / vgakit34.zip / LINE.ASM < prev    next >
Assembly Source File  |  1990-05-04  |  2KB  |  103 lines

  1.  
  2.     include    model.h
  3.  
  4. ;
  5. ;    VGAKIT Version 3.4
  6. ;
  7. ;    Copyright 1988,89,90 John Bridges
  8. ;    Free for use in commercial, shareware or freeware applications
  9. ;
  10. ;    LINE.ASM
  11. ;
  12. ;    contains:
  13. ;
  14. ;    bline
  15. ;
  16. ;
  17. .code
  18.     public    bline
  19.  
  20. callpt    macro            ;C order of parameter passing
  21.     push    [color]
  22.     push    di
  23.     push    si
  24.     call    [func]
  25.     add    sp,4
  26.     endm
  27.  
  28. ;bline(x,y,x2,y2,func())
  29. ;
  30. ;input   : endpoints of line and function to use as point
  31. ;output  : nothing
  32. ;utility : draw line between endpoints using function
  33. ;          converted c routine
  34. ;
  35. bline    proc    uses si di, x1:word,y1:word,x2:word,y2:word,color:word,func:ptr proc
  36.     local    cnt:word,acc:word
  37.     local    deltax:word,deltay:word,dirx:word,diry:word
  38.  
  39.     mov    si,[x1]
  40.     mov    di,[y1]
  41.     xor    ax,ax
  42.     mov    [acc],ax
  43.     mov    ax,[x2]
  44.     sub    ax,si
  45.     mov    dx,1
  46.     jns    nosx
  47.     neg    ax
  48.     mov    dx,-1
  49. nosx:    mov    [dirx],dx
  50.     mov    [deltax],ax
  51.     mov    ax,[y2]
  52.     sub    ax,di
  53.     mov    dx,1
  54.     jns    nosy
  55.     neg    ax
  56.     mov    dx,-1
  57. nosy:    mov    [diry],dx
  58.     mov    [deltay],ax
  59.     cmp    ax,[deltax]
  60.     jge    ylp
  61.     callpt
  62.     mov    ax,[deltax]
  63.     mov    [cnt],ax
  64. lp1:
  65.     dec    [cnt]
  66.     js    done
  67.     add    si,[dirx]
  68.     mov    ax,[deltay]
  69.     add    [acc],ax
  70.     mov    ax,[acc]
  71.     cmp    ax,[deltax]
  72.     jb    noincy
  73.     mov    ax,[deltax]
  74.     sub    [acc],ax
  75.     add    di,[diry]
  76. noincy:
  77.     callpt
  78.     jmp    short lp1
  79. ylp:
  80.     callpt
  81.     mov    ax,[deltay]
  82.     mov    [cnt],ax
  83. lp2:
  84.     dec    [cnt]
  85.     js    done
  86.     add    di,[diry]
  87.     mov    ax,[deltax]
  88.     add    [acc],ax
  89.     mov    ax,[acc]
  90.     cmp    ax,[deltay]
  91.     jb    noincx
  92.     mov    ax,[deltay]
  93.     sub    [acc],ax
  94.     add    si,[dirx]
  95. noincx:
  96.     callpt
  97.     jmp    short lp2
  98. done:    ret
  99. bline    endp
  100.  
  101.     end
  102.  
  103.